数据导入

在做很多项目的时候,都需要分析应用系统之间或者服务器之间的访问、关联关系,但关系的展示和分析,一直是个比较麻烦的事情。收集回来的数据,一般都是表格形式的,不太方便展示和分析。

然而根据表格,手工画图的话,一方面是比较繁琐,也很难画的美观,更重要的是,对于关联关系复杂的环境,画出来的图根本没法看,也没法分析和使用,往往就成了个装饰,除了表现出关系错综复杂,就没有别的用处了。

image.png

可能经常最后得出的是一幅类似上面这样的图。

在网上找到一款软件,yEd 可以比较方便的完成这个工作,不但可以根据表格的数据自动化的绘图,也能进行一定的分析。

image.png

这个软件有多种版本,包括开发用的 SDK,离线编辑版和在线版本等。 具体可以看 yWorks - Downloads

我们主要用到的是其中的 yEd Graph Editor ,Windows、MACOS、Linux 都支持,可以导入 Excel 文件生成图形并分析。

数据导入

安装后可以选择打开 Excel 文件,导入数据分为两种类型,一种是邻接矩阵(Adjacency Matrix),一种是连接列表( Edge List)。实际上这是两种不同的方式描述连接关系。

我们假设有这样一个银行环境,有如下这些系统:

系统名称 分类
核心银行 行内系统
网银 行内系统
手机银行 行内系统
门户网站 行内系统
银联 行外系统
柜面系统 行内系统
ATMP 行内系统
OA 系统 行内系统
邮箱系统 行内系统

系统间的连接关系,如下表(纯举例,无实际意义):

源节点 目标节点 连接类型
核心银行 ATMP 双向连接
核心银行 柜面系统 双向连接
门户网站 核心银行 单向连接
核心银行 手机银行 双向连接
核心银行 网银 双向连接
网银 银联 双向连接
OA 系统 邮箱系统 双向连接

邻接矩阵(Adjacency Matrix)

如果是邻接矩阵表示上面的关系,可以是如下的表格:

核心银行 网银 手机银行 门户网站 银联 柜面系统 ATMP OA 系统 邮箱系统
核心银行 0 1 1 0 0 1 1 0 0
网银 1 0 0 0 1 0 0 0 0
手机银行 1 0 0 0 0 0 0 0 0
门户网站 1 0 0 0 0 0 0 0 0
银联 0 1 0 0 0 0 0 0 0
柜面系统 1 0 0 0 0 0 0 0 0
ATMP 1 0 0 0 0 0 0 0 0
OA 系统 0 0 0 0 0 0 0 0 1
邮箱系统 0 0 0 0 0 0 0 1 0

0 表示无关系,1 表示有关系。

然后在 yEd 中,打开这个 Excel 表格文件,在“Data”页选择对应的内容

image-20240415105750469

然后在“Presentation”页的“Label Text”选择 "Node Label",并勾选“Fit Size to Label”,用于生成的图上标记节点名称。

image-20240415110341251

其他的可以先不用设置,确定后就可以得到一幅关联关系图了。

image-20240415110525870

连接列表

如果同样的关系,还可以用连接列表的方式表示,可以直接使用下面的表格,一行是一条连接关系。

源节点 目标节点 连接类型
核心银行 ATMP 双向连接
核心银行 柜面系统 双向连接
门户网站 核心银行 单向连接
核心银行 手机银行 双向连接
核心银行 网银 双向连接
网银 银联 双向连接
OA 系统 邮箱系统 双向连接

然后打开该 Excel 表格,选择相应的数据区域。

image-20240415151135884

即可生成关系图。

image-20240415151354968

生成后你会发现,默认的箭头是单向的,体现不出双向连接的关系。当然,你可以把表格补充完整,增加比如源为“ATMP”,目标为 " 核心银行 " 的行,但其实可以不用这么麻烦,我们可以直接编辑属性的映射。

选择菜单 Edit 下的 Properties Mapper...,新增一个 Edge Configuration。增加一个 Data Source,内容为“连接类型”(即上面表格 C 列的表头),映射选”Source Arrow",然后在下方,增加 Mapping,内容为 " 双向连接 ",然后选一个箭头类型。

image-20240415151827917

意思是,凡是该行“连接类型”一列内容为 " 双向连接 " 的。则它的源也有一个箭头。

应用以后,就有了双向箭头的图了。可以看到,门户网站到核心银行因为是单向连接,所以是单向箭头,其他的都已变为双向箭头了。

image-20240415152228548

利用这个功能,还可以有很多别的效果,比如再加一列,区分行内和行外系统,让导入的时候,行内系统的节点一种颜色,行外系统的节点用另一种颜色,甚至换用不同的形状图标等等都可以,大家有兴趣可以自己去试试。

分析数据

图形样式

可以通过菜单上的“Layout”一键更换各种样式,软件内置了非常多的图形样式,可以自定义自己想生成的关系图样式。

image-20240415111405649

当然你也可以直接编辑某个节点或者关系线的样式,也可以随意拖拽节点或者关系线。

节点关系

点击某个节点,左侧的“Neighborhood”可以直接显示出该节点的关系,有助于分析。比如点击 " 核心银行 ",则显示:

image-20240415111810873

在“Tools”菜单中,还有不少分析工具,比如 "Centrality Measures" 可以识别重要节点,比如根据节点连接关系的多少,显示不同的颜色或大小。颜色越深、形状越大的节点表示连接关系越多。

image-20240415112919578

可以结合“Tools”中的”Auto Alignment”对图形做一些自动化的规整,大家自己试一下就知道了。

节点分组

另一个很有用的功能是分组,在菜单“Group”,中选择 "Auto Grouping",就可以根据连接关系一键对节点进行分组。也就是我们可以比较容易的进行应用系统的分类。在划分系统群和设计比如系统迁移批次时很有用。比如上面的图,使用自动分组功能,效果如下(根据连接关系自动分为了两组,一组 7 个应用系统,一组 2 个应用系统):

image-20240415113449494

内容分享

最后完成的图,如果需要分享,可以通过 yEd 的在线版进行分享(需要 github 账户) yEd Live

其他样例

前面分享的是应用系统关系图,实际上比如网络访问关系图也可以用类似的方式自动生成。

源节点 源端口 目标节点 目标端口
192.168.1.1 1234 192.168.1.2 5678
192.168.1.2 8000 192.168.1.1 8080
192.168.1.3 8000 192.168.1.1 8080

可以生成类似下图的效果:

image-20240415155917159

当然,具体样式都可以自己去编辑。

其他更多使用说明,可以参考 yEd的说明文档


阅读量: